﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Content;

namespace HadronData
{
    public interface Geometry
    {
        bool Intersects(Geometry p_geometry);
        void ComputeContactPoints(Geometry p_geometry,
            List<ContactPoint> p_listContactPoints);

        void Transform(Transformation p_transformation);
        void Transform(Transformation p_transformation, Geometry p_geometrySource);
        Geometry TransformCopy(Transformation p_transformation);

        void ExtendBounds(ref Bounds p_bounds);
        Circle GetBoundingCircle(Vector2 p_vecOrigin);

        [ContentSerializerIgnore]
        Bounds Bounds { get; }
    }
}
